# 无参数无返回


def func1():
    """这是无参数无返回的标准函数"""
    print('hello, world!')


func1()
ano1 = lambda: print('hello, lambda!')  # 匿名函数只写一行代码（表达式）
ano1()  # 这是对匿名函数的调用，一般不会这样操作，一般是将匿名函数当作函数变量使用
# 无参数有返回


def func2():
    """这是无参数有返回的标准函数"""
    return 100


print(func2())
ano2 = lambda: 200  # 匿名函数不能用 return 返回，实际上自带返回属性
print(ano2())
# 有参数无返回


def func3(a, b):
    """这是有参数无返回的标准函数"""
    print(a + b)


func3(1, 1)
ano3 = lambda a, b: print(a + b)
ano3(10, 20)
# 有参数有返回


def func4(c, d):
    return c ** d


print(func4(2, 4))
ano4 = lambda c, d: c ** d
print(ano4(10, 4))
# 匿名函数的应用：可用于列表中的字典排序（这就是一种将匿名函数当作函数变量使用的例子）
list_test = [{'name': '小张', 'age': 38}, {'name': '小王', 'age': 25}, {'name': '小明', 'age': 27}]
list_test.sort(key=lambda x: x['age'], reverse=True)  # 内部逻辑复杂，可直接记结论
print(list_test)
# 关于排序
# 我们知道 sort 是常用的排序函数，那么我们也要知道它的根据是 ASCⅡ 码
# 根据规律可知，数字 < 大写英文字母 < 小写英文字母 < 汉字
# 可以使用 ord(str) 来查询对应的字符串的 ASCⅡ 码值，也可以使用 chr(ASCⅡ 码) 来查询对应的字符串
# 字符串之间是可以比较大小的，规则是：同一下标的字符比较各自的ASCⅡ 码值，从左往右依次对比，直至比较出结果，
# 若一直相等到最后则判定这两个字符串是相等的
